package cn.tedu.mall.search.repository;

import cn.tedu.mall.pojo.search.entity.SpuForElastic;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

// SpuForElastic操作ES创建的持久层接口
// 继承ElasticsearchRepository后就只能具备了批量新增的功能
@Repository
public interface SpuForElasticRepository extends
                    ElasticsearchRepository<SpuForElastic,Long> {
    // 方法名会有框架提示
    Iterable<SpuForElastic> querySpuForElasticsByTitleMatches(String title);
    // 此内容大多是从csmall项目的search模块下的http文件中粘贴而来，不要求精通语法
    // ？0 代表第一个占位符，如果用户传了俩值过来，就必有?0 ?1
    @Query("{\n" +
            "    \"bool\": {\n" +
            "      \"should\": [\n" +
            "        { \"match\": { \"name\":  \"?0\" }},\n" +
            "        { \"match\": { \"title\": \"?0\"}},\n" +
            "        { \"match\": { \"description\": \"?0\"}},\n" +
            "        { \"match\": { \"category_name\": \"?0\"}}\n" +
            "      ]\n" +
            "    }\n" +
            "  }")
    // 用户搜一个词 服务器对四个字段同时查
    Page<SpuForElastic> querySearch(String keyword,Pageable pageable);
}






